import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;

/**
 * Author: Daniel Michalski
 * Date: 12.04.13
 */

public class Main {
    public static final String URL_ADDRESS = "http://www.internic.com";

    public static void main(String[] args) {
        try {
            URL url = new URL(URL_ADDRESS);
            URLConnection hpCon = url.openConnection();

            showDate(hpCon);
            showContentType(hpCon);
            showExpirationDate(hpCon);
            showLastModifiedDate(hpCon);
            showContentLength(hpCon);
            showConent(hpCon);

        } catch (MalformedURLException e) {
            System.out.println("Błąd: " + e);
        } catch (IOException e) {
            System.out.println("Błąd wejścia-wyjścia: " + e);
        }
    }

    private static void showConent(URLConnection hpCon) {
        int len = hpCon.getContentLength();
        if (len > 0) {
            try (InputStream input = hpCon.getInputStream()) {
                int c;
                System.out.println("=== Zawartość ===");
                while ((c = input.read()) != -1) {
                    System.out.print((char) c);
                }
            } catch (IOException e) {
                System.out.println("Błąd: " + e);
            }
        }
    }

    private static void showContentLength(URLConnection hpCon) {
        int len = hpCon.getContentLength();
        if (len == -1)
            System.out.println("Długość zawartości niedostępna.");
        else
            System.out.println("Długość zawartości: " + len);
    }

    private static void showLastModifiedDate(URLConnection hpCon) {
        long date;
        date = hpCon.getLastModified();
        if (date == 0)
            System.out.println("Brak informacji o dacie ostatniej modyfikacji.");
        else
            System.out.println("Ostatnio zmodyfikowany: " + new Date(date));
    }

    private static void showExpirationDate(URLConnection hpCon) {
        long date;
        date = hpCon.getExpiration();
        if (date == 0)
            System.out.println("Brak informacji o dacie ważności.");
        else
            System.out.println("Wygasa: " + new Date(date));
    }

    private static void showContentType(URLConnection hpCon) {
        System.out.println("Rodzaj zawartości: " + hpCon.getContentType());
    }

    private static void showDate(URLConnection hpCon) {
        long date = hpCon.getDate();
        if (date == 0)
            System.out.println("Brak informacji o dacie.");
        else
            System.out.println("Data: " + new Date(date));
    }
}